package vista.objetos;

import controlador.IConversorLogicoAGraficable;
import logica.Entidad;
import logica.IdExternoInexistenteException;
import logica.TipoDeEntidad;

public abstract class FabricaEntidadGraficable {
	
	/*Carga la lista de atributos que tenga la entidad con la posición default para los atributos*/
	public abstract EntidadGraficable crearEntidadGraficable(Entidad entidad, DiagramaGraficable diagramaActual, IConversorLogicoAGraficable conversor) throws AtributoTipoNoSoportadoException, IdExternoInexistenteException, GraficableException;
	/*No carga la lista de atributos*/
	public abstract EntidadGraficable crearEntidadGraficable(Entidad entidad);
	public abstract EstrategiaEntidadGraficable getTipoEntidadGraficable();
	public abstract TipoDeEntidad getTipoDeEntidad();
	
	protected void cargarDatosEnEntidad(EntidadGraficable entidadGraf, DiagramaGraficable diagramaActual, IConversorLogicoAGraficable conversor) throws AtributoTipoNoSoportadoException, IdExternoInexistenteException, GraficableException
	{
		Entidad entidad = (Entidad) entidadGraf.getObjetoDiagramaDecorado();
		entidadGraf.setAtributos(conversor.getAtributoGraficables(entidad.getAtributos()));
		entidadGraf.setReferenciasExternas(diagramaActual);
		entidadGraf.crearIdentificadores();
	}
}
